Load libraries
library(car)
library(knitr)
library(rmdformats)
library(ggplot2)
library(ggpubr)
library(GGally)
library(tidyverse)
library(lme4)
library(lmerTest)
library("MuMIn")
library(lmtest)
library(boot)
Read datasets
AllSubs_NeuralActivation <- read.csv('/Users/luisalvarez/Documents/GitHub/RM_Thesis_Neuroforecasting/ProcessedData/AllSubs_NeuralActivation_Aggregate_Combined_clean.csv')
AllSubs_NeuralActivation_Comedy <- read.csv('/Users/luisalvarez/Documents/GitHub/RM_Thesis_Neuroforecasting/ProcessedData/AllSubs_NeuralActivation_Aggregate_Combined_Comedy_clean.csv')
AllSubs_NeuralActivation_Horror <- read.csv('/Users/luisalvarez/Documents/GitHub/RM_Thesis_Neuroforecasting/ProcessedData/AllSubs_NeuralActivation_Aggregate_Combined_Horror_clean.csv')
Notes:
- Have note removed outliers from data.
Create data frames for each model.
# Define aggregate variables.
All_Gross_W1_log <- log(AllSubs_NeuralActivation$Gross_US_W1_num)
All_Theaters_W1 <- AllSubs_NeuralActivation$Theaters_US_W1_num
Comedy_Gross_W1_log <- log(AllSubs_NeuralActivation_Comedy$Gross_US_W1_num)
Comedy_Theaters_W1 <- AllSubs_NeuralActivation_Comedy$Theaters_US_W1_num
Horror_Gross_W1_log <- log(AllSubs_NeuralActivation_Horror$Gross_US_W1_num)
Horror_Theaters_W1 <- AllSubs_NeuralActivation_Horror$Theaters_US_W1_num
M1_df <- data.frame(All_Gross_W1_log, All_Theaters_W1)
M1_C_df <- data.frame(Comedy_Gross_W1_log, Comedy_Theaters_W1)
M1_H_df <- data.frame(Horror_Gross_W1_log, Horror_Theaters_W1)
# Define affect variables.
All_PA <- AllSubs_NeuralActivation$Pos_arousal_scaled
All_NA <- AllSubs_NeuralActivation$Neg_arousal_scaled
Comedy_PA <- AllSubs_NeuralActivation_Comedy$Pos_arousal_scaled
Comedy_NA <- AllSubs_NeuralActivation_Comedy$Neg_arousal_scaled
Horror_PA <- AllSubs_NeuralActivation_Horror$Pos_arousal_scaled
Horror_NA <- AllSubs_NeuralActivation_Horror$Neg_arousal_scaled
M2_df <- data.frame(All_Gross_W1_log, All_PA, All_NA)
M2_C_df <- data.frame(Comedy_Gross_W1_log, Comedy_PA, Comedy_NA)
M2_H_df <- data.frame(Horror_Gross_W1_log, Horror_PA, Horror_NA)
# Define ISC variables.
All_NAcc_ISC <- AllSubs_NeuralActivation$NAcc_ISC
All_AIns_ISC <- AllSubs_NeuralActivation$AIns_ISC
All_MPFC_ISC <- AllSubs_NeuralActivation$MPFC_ISC
Comedy_NAcc_ISC <- AllSubs_NeuralActivation_Comedy$NAcc_ISC
Comedy_AIns_ISC <- AllSubs_NeuralActivation_Comedy$AIns_ISC
Comedy_MPFC_ISC <- AllSubs_NeuralActivation_Comedy$MPFC_ISC
Horror_NAcc_ISC <- AllSubs_NeuralActivation_Horror$NAcc_ISC
Horror_AIns_ISC <- AllSubs_NeuralActivation_Horror$AIns_ISC
Horror_MPFC_ISC <- AllSubs_NeuralActivation_Horror$MPFC_ISC
# Define models.
M4_df <- data.frame(All_NAcc_ISC, All_AIns_ISC, All_MPFC_ISC)
M4_C_df <- data.frame(Comedy_NAcc_ISC, Comedy_AIns_ISC, Comedy_MPFC_ISC)
M4_H_df <- data.frame(Horror_NAcc_ISC, Horror_AIns_ISC, Horror_MPFC_ISC)
M5_df <- data.frame(All_Gross_W1_log, All_PA, All_NA, All_NAcc_ISC, All_AIns_ISC, All_MPFC_ISC)
M5_C_df <- data.frame(Comedy_Gross_W1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_ISC, Comedy_AIns_ISC, Comedy_MPFC_ISC)
M5_H_df <- data.frame(Horror_Gross_W1_log, Horror_PA, Horror_NA, Horror_NAcc_ISC, Horror_AIns_ISC, Horror_MPFC_ISC)
# Define whole variables.
All_NAcc_whole <- AllSubs_NeuralActivation$NAcc_whole
All_AIns_whole <- AllSubs_NeuralActivation$AIns_whole
All_MPFC_whole <- AllSubs_NeuralActivation$MPFC_whole
Comedy_NAcc_whole <- AllSubs_NeuralActivation_Comedy$NAcc_whole
Comedy_AIns_whole <- AllSubs_NeuralActivation_Comedy$AIns_whole
Comedy_MPFC_whole <- AllSubs_NeuralActivation_Comedy$MPFC_whole
Horror_NAcc_whole <- AllSubs_NeuralActivation_Horror$NAcc_whole
Horror_AIns_whole <- AllSubs_NeuralActivation_Horror$AIns_whole
Horror_MPFC_whole <- AllSubs_NeuralActivation_Horror$MPFC_whole
# Define models.
M6_df <- data.frame(All_NAcc_whole, All_AIns_whole, All_MPFC_whole)
M6_C_df <- data.frame(Comedy_NAcc_whole, Comedy_AIns_whole, Comedy_MPFC_whole)
M6_H_df <- data.frame(Horror_NAcc_whole, Horror_AIns_whole, Horror_MPFC_whole)
M7_df <- data.frame(All_Gross_W1_log, All_PA, All_NA, All_NAcc_whole, All_AIns_whole, All_MPFC_whole)
M7_C_df <- data.frame(Comedy_Gross_W1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_whole,
Comedy_AIns_whole, Comedy_MPFC_whole)
M7_H_df <- data.frame(Horror_Gross_W1_log, Horror_PA, Horror_NA, Horror_NAcc_whole,
Horror_AIns_whole, Horror_MPFC_whole)
# Define onset variables.
All_NAcc_onset <- AllSubs_NeuralActivation$NAcc_onset
All_AIns_onset <- AllSubs_NeuralActivation$AIns_onset
All_MPFC_onset <- AllSubs_NeuralActivation$MPFC_onset
Comedy_NAcc_onset <- AllSubs_NeuralActivation_Comedy$NAcc_onset
Comedy_AIns_onset <- AllSubs_NeuralActivation_Comedy$AIns_onset
Comedy_MPFC_onset <- AllSubs_NeuralActivation_Comedy$MPFC_onset
Horror_NAcc_onset <- AllSubs_NeuralActivation_Horror$NAcc_onset
Horror_AIns_onset <- AllSubs_NeuralActivation_Horror$AIns_onset
Horror_MPFC_onset <- AllSubs_NeuralActivation_Horror$MPFC_onset
# Define models.
M8_df <- data.frame(All_NAcc_onset, All_AIns_onset, All_MPFC_onset)
M8_C_df <- data.frame(Comedy_NAcc_onset, Comedy_AIns_onset, Comedy_MPFC_onset)
M8_H_df <- data.frame(Horror_NAcc_onset, Horror_AIns_onset, Horror_MPFC_onset)
M9_df <- data.frame(All_Gross_W1_log, All_PA, All_NA, All_NAcc_onset, All_AIns_onset, All_MPFC_onset)
M9_C_df <- data.frame(Comedy_Gross_W1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_onset,
Comedy_AIns_onset, Comedy_MPFC_onset)
M9_H_df <- data.frame(Horror_Gross_W1_log, Horror_PA, Horror_NA, Horror_NAcc_onset,
Horror_AIns_onset, Horror_MPFC_onset)
# Define middle variables.
All_NAcc_middle <- AllSubs_NeuralActivation$NAcc_middle
All_AIns_middle <- AllSubs_NeuralActivation$AIns_middle
All_MPFC_middle <- AllSubs_NeuralActivation$MPFC_middle
Comedy_NAcc_middle <- AllSubs_NeuralActivation_Comedy$NAcc_middle
Comedy_AIns_middle <- AllSubs_NeuralActivation_Comedy$AIns_middle
Comedy_MPFC_middle <- AllSubs_NeuralActivation_Comedy$MPFC_middle
Horror_NAcc_middle <- AllSubs_NeuralActivation_Horror$NAcc_middle
Horror_AIns_middle <- AllSubs_NeuralActivation_Horror$AIns_middle
Horror_MPFC_middle <- AllSubs_NeuralActivation_Horror$MPFC_middle
# Define models.
M10_df <- data.frame(All_NAcc_middle, All_AIns_middle, All_MPFC_middle)
M10_C_df <- data.frame(Comedy_NAcc_middle, Comedy_AIns_middle, Comedy_MPFC_middle)
M10_H_df <- data.frame(Horror_NAcc_middle, Horror_AIns_middle, Horror_MPFC_middle)
M11_df <- data.frame(All_Gross_W1_log, All_PA, All_NA, All_NAcc_middle, All_AIns_middle, All_MPFC_middle)
M11_C_df <- data.frame(Comedy_Gross_W1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_middle,
Comedy_AIns_middle, Comedy_MPFC_middle)
M11_H_df <- data.frame(Horror_Gross_W1_log, Horror_PA, Horror_NA, Horror_NAcc_middle,
Horror_AIns_middle, Horror_MPFC_middle)
# Define middle variables.
All_NAcc_offset <- AllSubs_NeuralActivation$NAcc_offset
All_AIns_offset <- AllSubs_NeuralActivation$AIns_offset
All_MPFC_offset <- AllSubs_NeuralActivation$MPFC_offset
Comedy_NAcc_offset <- AllSubs_NeuralActivation_Comedy$NAcc_offset
Comedy_AIns_offset <- AllSubs_NeuralActivation_Comedy$AIns_offset
Comedy_MPFC_offset <- AllSubs_NeuralActivation_Comedy$MPFC_offset
Horror_NAcc_offset <- AllSubs_NeuralActivation_Horror$NAcc_offset
Horror_AIns_offset <- AllSubs_NeuralActivation_Horror$AIns_offset
Horror_MPFC_offset <- AllSubs_NeuralActivation_Horror$MPFC_offset
# Define models.
M12_df <- data.frame(All_NAcc_offset, All_AIns_offset, All_MPFC_offset)
M12_C_df <- data.frame(Comedy_NAcc_offset, Comedy_AIns_offset, Comedy_MPFC_offset)
M12_H_df <- data.frame(Horror_NAcc_offset, Horror_AIns_offset, Horror_MPFC_offset)
M13_df <- data.frame(All_Gross_W1_log, All_PA, All_NA, All_NAcc_offset, All_AIns_offset, All_MPFC_offset)
M13_C_df <- data.frame(Comedy_Gross_W1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_offset,
Comedy_AIns_offset, Comedy_MPFC_offset)
M13_H_df <- data.frame(Horror_Gross_W1_log, Horror_PA, Horror_NA, Horror_NAcc_offset,
Horror_AIns_offset, Horror_MPFC_offset)
M14_df <- data.frame(All_Gross_W1_log, All_PA, All_NA, All_NAcc_onset, All_AIns_middle, All_MPFC_offset)
M14_C_df <- data.frame(Comedy_Gross_W1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_onset,
Comedy_AIns_middle, Comedy_MPFC_offset)
M14_H_df <- data.frame(Horror_Gross_W1_log, Horror_PA, Horror_NA, Horror_NAcc_onset,
Horror_AIns_middle, Horror_MPFC_offset)
Neuroforecasting: First Week US.
M1: Behavioral data
Call:
lm(formula = log(Gross_US_W1_num) ~ Type + scale(Theaters_US_W1_num) +
Type:scale(Theaters_US_W1_num), data = AllSubs_NeuralActivation %>%
mutate(Type = factor(Type, levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-1.55922 -0.28515 0.02387 0.33475 1.38066
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 16.4641 0.2010 81.928 < 2e-16 ***
Typecomedy -0.5646 0.2655 -2.127 0.04310 *
scale(Theaters_US_W1_num) 1.5282 0.4206 3.633 0.00121 **
Typecomedy:scale(Theaters_US_W1_num) -0.3868 0.4422 -0.875 0.38980
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.688 on 26 degrees of freedom
Multiple R-squared: 0.7944, Adjusted R-squared: 0.7706
F-statistic: 33.48 on 3 and 26 DF, p-value: 4.425e-09
R2m R2c
[1,] 0.7759523 0.7759523
[1] 68.40126



M2: Affective data alone
Call:
lm(formula = log(Gross_US_W1_num) ~ Type + scale(Pos_arousal_scaled) +
scale(Neg_arousal_scaled) + Type:scale(Pos_arousal_scaled) +
Type:scale(Neg_arousal_scaled), data = AllSubs_NeuralActivation %>%
mutate(Type = factor(Type, levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-4.1431 -0.4889 0.1215 0.9237 1.9269
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 17.0177 1.1362 14.977 1.12e-13 ***
Typecomedy -0.2736 1.8589 -0.147 0.884
scale(Pos_arousal_scaled) -0.1825 0.8610 -0.212 0.834
scale(Neg_arousal_scaled) -0.3956 0.7695 -0.514 0.612
Typecomedy:scale(Pos_arousal_scaled) 0.4911 0.9404 0.522 0.606
Typecomedy:scale(Neg_arousal_scaled) 1.8368 1.8219 1.008 0.323
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.411 on 24 degrees of freedom
Multiple R-squared: 0.2017, Adjusted R-squared: 0.03533
F-statistic: 1.212 on 5 and 24 DF, p-value: 0.3335
R2m R2c
[1,] 0.1728986 0.1728986
[1] 113.0942



M3: Aggregate and affective data alone
Call:
lm(formula = log(Gross_US_W1_num) ~ Type + scale(Pos_arousal_scaled) +
scale(Neg_arousal_scaled) + Type:scale(Pos_arousal_scaled) +
Type:scale(Neg_arousal_scaled), data = AllSubs_NeuralActivation %>%
mutate(Type = factor(Type, levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-4.1431 -0.4889 0.1215 0.9237 1.9269
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 17.0177 1.1362 14.977 1.12e-13 ***
Typecomedy -0.2736 1.8589 -0.147 0.884
scale(Pos_arousal_scaled) -0.1825 0.8610 -0.212 0.834
scale(Neg_arousal_scaled) -0.3956 0.7695 -0.514 0.612
Typecomedy:scale(Pos_arousal_scaled) 0.4911 0.9404 0.522 0.606
Typecomedy:scale(Neg_arousal_scaled) 1.8368 1.8219 1.008 0.323
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.411 on 24 degrees of freedom
Multiple R-squared: 0.2017, Adjusted R-squared: 0.03533
F-statistic: 1.212 on 5 and 24 DF, p-value: 0.3335
R2m R2c
[1,] 0.1728986 0.1728986
[1] 113.0942
M4: ISC data alone
Call:
lm(formula = log(Gross_US_W1_num) ~ Type + +scale(NAcc_ISC) +
scale(AIns_ISC) + scale(MPFC_ISC) + Type:scale(NAcc_ISC) +
Type:scale(AIns_ISC) + Type:scale(MPFC_ISC), data = AllSubs_NeuralActivation %>%
mutate(Type = factor(Type, levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-4.5626 -0.3083 0.2310 0.5370 1.9757
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 16.70980 0.40320 41.443 <2e-16 ***
Typecomedy -0.99626 0.54755 -1.819 0.0825 .
scale(NAcc_ISC) 0.61228 0.56292 1.088 0.2885
scale(AIns_ISC) -0.12105 0.38625 -0.313 0.7569
scale(MPFC_ISC) 0.29369 0.53461 0.549 0.5883
Typecomedy:scale(NAcc_ISC) -0.80448 0.66711 -1.206 0.2407
Typecomedy:scale(AIns_ISC) 0.38701 0.62113 0.623 0.5396
Typecomedy:scale(MPFC_ISC) -0.09906 0.64873 -0.153 0.8800
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.453 on 22 degrees of freedom
Multiple R-squared: 0.2241, Adjusted R-squared: -0.02275
F-statistic: 0.9078 on 7 and 22 DF, p-value: 0.5184
R2m R2c
[1,] 0.1797455 0.1797455
[1] 116.2379



M5: ISC data + affective data + behavioral data
Call:
lm(formula = log(Gross_US_W1_num) ~ Type + scale(Theaters_US_W1_num) +
scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_ISC) +
scale(AIns_ISC) + scale(MPFC_ISC) + Type:scale(Theaters_US_W1_num) +
Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) +
Type:scale(NAcc_ISC) + Type:scale(AIns_ISC) + Type:scale(MPFC_ISC),
data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type,
levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-0.86763 -0.24968 -0.00754 0.28252 1.12778
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 16.01970 0.56278 28.465 3.92e-15 ***
Typecomedy 1.95895 0.89449 2.190 0.04368 *
scale(Theaters_US_W1_num) 1.30716 0.44394 2.944 0.00952 **
scale(Pos_arousal_scaled) -0.90672 0.40708 -2.227 0.04063 *
scale(Neg_arousal_scaled) -0.25800 0.37397 -0.690 0.50015
scale(NAcc_ISC) 0.23035 0.26084 0.883 0.39026
scale(AIns_ISC) -0.28392 0.16844 -1.686 0.11127
scale(MPFC_ISC) 0.60359 0.26119 2.311 0.03449 *
Typecomedy:scale(Theaters_US_W1_num) -0.02941 0.46422 -0.063 0.95027
Typecomedy:scale(Pos_arousal_scaled) 0.68765 0.45661 1.506 0.15155
Typecomedy:scale(Neg_arousal_scaled) 2.58832 0.87119 2.971 0.00901 **
Typecomedy:scale(NAcc_ISC) 0.07230 0.31912 0.227 0.82363
Typecomedy:scale(AIns_ISC) 0.18418 0.28584 0.644 0.52849
Typecomedy:scale(MPFC_ISC) -0.97877 0.31329 -3.124 0.00654 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.5868 on 16 degrees of freedom
Multiple R-squared: 0.9079, Adjusted R-squared: 0.8331
F-statistic: 12.14 on 13 and 16 DF, p-value: 6.43e-06
R2m R2c
[1,] 0.8447398 0.8447398
[1] 64.29403



M6: Neural whole data alone
Call:
lm(formula = log(Gross_US_W1_num) ~ Type + +scale(NAcc_whole) +
scale(AIns_whole) + scale(MPFC_whole) + Type:scale(NAcc_whole) +
Type:scale(AIns_whole) + Type:scale(MPFC_whole), data = AllSubs_NeuralActivation %>%
mutate(Type = factor(Type, levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-3.6829 -0.3831 0.1901 0.6917 2.0438
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 16.5732 0.5184 31.967 <2e-16 ***
Typecomedy -0.7712 0.7399 -1.042 0.309
scale(NAcc_whole) -0.5606 0.5368 -1.044 0.308
scale(AIns_whole) 0.5299 0.6150 0.862 0.398
scale(MPFC_whole) 0.1706 0.5180 0.329 0.745
Typecomedy:scale(NAcc_whole) 0.3765 0.7021 0.536 0.597
Typecomedy:scale(AIns_whole) -0.2614 0.9131 -0.286 0.777
Typecomedy:scale(MPFC_whole) 0.2835 0.6416 0.442 0.663
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.44 on 22 degrees of freedom
Multiple R-squared: 0.2374, Adjusted R-squared: -0.005294
F-statistic: 0.9782 on 7 and 22 DF, p-value: 0.4714
R2m R2c
[1,] 0.1910128 0.1910128
[1] 115.7214



M7: Neural whole data + affective data + behavioral data
Call:
lm(formula = log(Gross_US_W1_num) ~ Type + scale(Theaters_US_W1_num) +
scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_whole) +
scale(AIns_whole) + scale(MPFC_whole) + Type:scale(Theaters_US_W1_num) +
Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) +
Type:scale(NAcc_whole) + Type:scale(AIns_whole) + Type:scale(MPFC_whole),
data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type,
levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-0.99456 -0.27314 -0.01657 0.28123 0.96246
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 16.25722 0.60777 26.749 1.04e-14 ***
Typecomedy 1.57410 0.91504 1.720 0.1047
scale(Theaters_US_W1_num) 1.52817 0.41444 3.687 0.0020 **
scale(Pos_arousal_scaled) -0.20928 0.58243 -0.359 0.7241
scale(Neg_arousal_scaled) -0.09669 0.38485 -0.251 0.8048
scale(NAcc_whole) -0.14503 0.26272 -0.552 0.5885
scale(AIns_whole) 0.28367 0.28207 1.006 0.3295
scale(MPFC_whole) -0.08670 0.32947 -0.263 0.7958
Typecomedy:scale(Theaters_US_W1_num) -0.38738 0.43351 -0.894 0.3848
Typecomedy:scale(Pos_arousal_scaled) 0.27624 0.61052 0.452 0.6570
Typecomedy:scale(Neg_arousal_scaled) 2.45693 0.88987 2.761 0.0139 *
Typecomedy:scale(NAcc_whole) 0.51907 0.33703 1.540 0.1431
Typecomedy:scale(AIns_whole) -0.47906 0.41378 -1.158 0.2640
Typecomedy:scale(MPFC_whole) 0.38309 0.37290 1.027 0.3196
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.5955 on 16 degrees of freedom
Multiple R-squared: 0.9052, Adjusted R-squared: 0.8281
F-statistic: 11.75 on 13 and 16 DF, p-value: 8.023e-06
R2m R2c
[1,] 0.8404262 0.8404262
[1] 65.17857



M8: Neural onset data alone
Call:
lm(formula = log(Gross_US_W1_num) ~ Type + +scale(NAcc_onset) +
scale(AIns_onset) + scale(MPFC_onset) + Type:scale(NAcc_onset) +
Type:scale(AIns_onset) + Type:scale(MPFC_onset), data = AllSubs_NeuralActivation %>%
mutate(Type = factor(Type, levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-3.6998 -0.4321 0.1720 0.8185 1.6881
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 16.9078 0.4518 37.427 <2e-16 ***
Typecomedy -1.6161 0.5897 -2.741 0.0119 *
scale(NAcc_onset) -0.3234 0.5216 -0.620 0.5415
scale(AIns_onset) -0.2077 0.5842 -0.356 0.7256
scale(MPFC_onset) 0.1921 0.4738 0.405 0.6891
Typecomedy:scale(NAcc_onset) 0.4906 0.6429 0.763 0.4535
Typecomedy:scale(AIns_onset) -0.7656 0.7631 -1.003 0.3266
Typecomedy:scale(MPFC_onset) 1.0559 0.6864 1.538 0.1382
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.335 on 22 degrees of freedom
Multiple R-squared: 0.3447, Adjusted R-squared: 0.1362
F-statistic: 1.653 on 7 and 22 DF, p-value: 0.1729
R2m R2c
[1,] 0.2852503 0.2852503
[1] 111.1697



M9: Neural onset data + affective data + behavioral data
Call:
lm(formula = log(Gross_US_W1_num) ~ Type + scale(Theaters_US_W1_num) +
scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_onset) +
scale(AIns_onset) + scale(MPFC_onset) + Type:scale(Theaters_US_W1_num) +
Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) +
Type:scale(NAcc_onset) + Type:scale(AIns_onset) + Type:scale(MPFC_onset),
data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type,
levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-0.90801 -0.39211 0.06306 0.33282 1.20478
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 17.302775 0.844057 20.500 6.54e-13 ***
Typecomedy -0.076805 1.202093 -0.064 0.94985
scale(Theaters_US_W1_num) 1.562535 0.425321 3.674 0.00205 **
scale(Pos_arousal_scaled) -0.366374 0.499891 -0.733 0.47422
scale(Neg_arousal_scaled) -0.741677 0.523649 -1.416 0.17584
scale(NAcc_onset) -0.342762 0.271261 -1.264 0.22448
scale(AIns_onset) -0.841501 0.392021 -2.147 0.04750 *
scale(MPFC_onset) 0.268483 0.256281 1.048 0.31038
Typecomedy:scale(Theaters_US_W1_num) -0.467642 0.452099 -1.034 0.31634
Typecomedy:scale(Pos_arousal_scaled) 0.205970 0.548225 0.376 0.71207
Typecomedy:scale(Neg_arousal_scaled) 2.338685 1.039689 2.249 0.03892 *
Typecomedy:scale(NAcc_onset) 0.520227 0.368203 1.413 0.17685
Typecomedy:scale(AIns_onset) 0.477460 0.473021 1.009 0.32781
Typecomedy:scale(MPFC_onset) -0.009214 0.379665 -0.024 0.98094
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.6614 on 16 degrees of freedom
Multiple R-squared: 0.883, Adjusted R-squared: 0.788
F-statistic: 9.292 on 13 and 16 DF, p-value: 3.817e-05
R2m R2c
[1,] 0.8064055 0.8064055
[1] 71.47321



M10: Neural middle data alone
Call:
lm(formula = log(Gross_US_W1_num) ~ Type + +scale(NAcc_middle) +
scale(AIns_middle) + scale(MPFC_middle) + Type:scale(NAcc_middle) +
Type:scale(AIns_middle) + Type:scale(MPFC_middle), data = AllSubs_NeuralActivation %>%
mutate(Type = factor(Type, levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-4.0479 -0.3572 0.1014 0.7554 1.8228
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 16.77683 0.46169 36.338 <2e-16 ***
Typecomedy -0.44119 0.65006 -0.679 0.504
scale(NAcc_middle) -0.37128 0.60411 -0.615 0.545
scale(AIns_middle) 0.13702 0.44866 0.305 0.763
scale(MPFC_middle) -0.27542 0.41798 -0.659 0.517
Typecomedy:scale(NAcc_middle) 0.40053 0.72039 0.556 0.584
Typecomedy:scale(AIns_middle) 0.98953 0.72471 1.365 0.186
Typecomedy:scale(MPFC_middle) -0.02962 0.60640 -0.049 0.961
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.367 on 22 degrees of freedom
Multiple R-squared: 0.3126, Adjusted R-squared: 0.09385
F-statistic: 1.429 on 7 and 22 DF, p-value: 0.2438
R2m R2c
[1,] 0.2564756 0.2564756
[1] 112.6066



M11: Neural middle data + affective data + behavioral data
Call:
lm(formula = log(Gross_US_W1_num) ~ Type + scale(Theaters_US_W1_num) +
scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_middle) +
scale(AIns_middle) + scale(MPFC_middle) + Type:scale(Theaters_US_W1_num) +
Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) +
Type:scale(NAcc_middle) + Type:scale(AIns_middle) + Type:scale(MPFC_middle),
data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type,
levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-0.90123 -0.34967 0.06124 0.32376 1.04536
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 16.21572 0.60396 26.849 9.8e-15 ***
Typecomedy 0.84466 0.91724 0.921 0.37079
scale(Theaters_US_W1_num) 1.81371 0.48933 3.707 0.00192 **
scale(Pos_arousal_scaled) -0.35687 0.43224 -0.826 0.42115
scale(Neg_arousal_scaled) -0.30347 0.42833 -0.708 0.48884
scale(NAcc_middle) 0.36408 0.39195 0.929 0.36675
scale(AIns_middle) 0.22775 0.21781 1.046 0.31127
scale(MPFC_middle) -0.10071 0.21057 -0.478 0.63893
Typecomedy:scale(Theaters_US_W1_num) -0.65853 0.50875 -1.294 0.21390
Typecomedy:scale(Pos_arousal_scaled) 0.21594 0.49100 0.440 0.66596
Typecomedy:scale(Neg_arousal_scaled) 1.31128 0.98801 1.327 0.20307
Typecomedy:scale(NAcc_middle) -0.04305 0.43809 -0.098 0.92295
Typecomedy:scale(AIns_middle) 0.03310 0.45306 0.073 0.94267
Typecomedy:scale(MPFC_middle) -0.13681 0.31461 -0.435 0.66947
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.6424 on 16 degrees of freedom
Multiple R-squared: 0.8897, Adjusted R-squared: 0.8
F-statistic: 9.924 on 13 and 16 DF, p-value: 2.481e-05
R2m R2c
[1,] 0.8164716 0.8164716
[1] 69.72344



M12: Neural offset data alone
Call:
lm(formula = log(Gross_US_W1_num) ~ Type + +scale(NAcc_offset) +
scale(AIns_offset) + scale(MPFC_offset) + Type:scale(NAcc_offset) +
Type:scale(AIns_offset) + Type:scale(MPFC_offset), data = AllSubs_NeuralActivation %>%
mutate(Type = factor(Type, levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-3.6743 -0.3508 0.1999 0.6837 2.0821
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 16.6822 0.4184 39.867 <2e-16 ***
Typecomedy -1.1003 0.5997 -1.835 0.0801 .
scale(NAcc_offset) -0.2359 0.4577 -0.516 0.6113
scale(AIns_offset) 0.2008 0.3980 0.505 0.6189
scale(MPFC_offset) 0.2403 0.5422 0.443 0.6619
Typecomedy:scale(NAcc_offset) -0.1149 0.7216 -0.159 0.8750
Typecomedy:scale(AIns_offset) -0.5850 0.8097 -0.722 0.4776
Typecomedy:scale(MPFC_offset) 0.2360 0.6859 0.344 0.7340
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 1.467 on 22 degrees of freedom
Multiple R-squared: 0.2093, Adjusted R-squared: -0.04228
F-statistic: 0.8319 on 7 and 22 DF, p-value: 0.5723
R2m R2c
[1,] 0.1672302 0.1672302
[1] 116.8054



M13: Neural offset data + affective data + behavioral data
Call:
lm(formula = log(Gross_US_W1_num) ~ Type + scale(Theaters_US_W1_num) +
scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_offset) +
scale(AIns_offset) + scale(MPFC_offset) + Type:scale(Theaters_US_W1_num) +
Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) +
Type:scale(NAcc_offset) + Type:scale(AIns_offset) + Type:scale(MPFC_offset),
data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type,
levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-0.83310 -0.25490 -0.02203 0.31792 0.94449
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 16.392380 0.504429 32.497 4.87e-16 ***
Typecomedy 0.871610 0.745363 1.169 0.259378
scale(Theaters_US_W1_num) 1.958277 0.478836 4.090 0.000855 ***
scale(Pos_arousal_scaled) 0.007493 0.426807 0.018 0.986211
scale(Neg_arousal_scaled) -0.081703 0.441972 -0.185 0.855661
scale(NAcc_offset) -0.150464 0.174607 -0.862 0.401568
scale(AIns_offset) 0.269710 0.163034 1.654 0.117544
scale(MPFC_offset) -0.397626 0.347125 -1.145 0.268855
Typecomedy:scale(Theaters_US_W1_num) -0.783077 0.491361 -1.594 0.130566
Typecomedy:scale(Pos_arousal_scaled) 0.160197 0.457094 0.350 0.730558
Typecomedy:scale(Neg_arousal_scaled) 1.762680 0.779570 2.261 0.038040 *
Typecomedy:scale(NAcc_offset) 0.030317 0.267425 0.113 0.911151
Typecomedy:scale(AIns_offset) -0.227606 0.315011 -0.723 0.480395
Typecomedy:scale(MPFC_offset) 0.950272 0.379822 2.502 0.023585 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.5168 on 16 degrees of freedom
Multiple R-squared: 0.9286, Adjusted R-squared: 0.8706
F-statistic: 16 on 13 and 16 DF, p-value: 9.396e-07
R2m R2c
[1,] 0.8776506 0.8776506
[1] 56.67541



M14: Sequence model
Call:
lm(formula = log(Gross_US_W1_num) ~ Type + scale(Theaters_US_W1_num) +
scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_onset) +
scale(AIns_middle) + scale(MPFC_offset) + Type:scale(Pos_arousal_scaled) +
Type:scale(Neg_arousal_scaled) + Type:scale(NAcc_onset) +
Type:scale(AIns_middle) + Type:scale(MPFC_offset), data = AllSubs_NeuralActivation %>%
mutate(Type = factor(Type, levels = c("horror", "comedy"))))
Residuals:
Min 1Q Median 3Q Max
-1.00369 -0.10391 0.00625 0.19037 0.76465
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 16.50986 0.39356 41.950 < 2e-16 ***
Typecomedy 1.49474 0.69392 2.154 0.045875 *
scale(Theaters_US_W1_num) 1.20671 0.09297 12.979 3e-10 ***
scale(Pos_arousal_scaled) -0.26824 0.33773 -0.794 0.437992
scale(Neg_arousal_scaled) -0.38981 0.27581 -1.413 0.175606
scale(NAcc_onset) -0.36685 0.19239 -1.907 0.073595 .
scale(AIns_middle) 0.41837 0.15054 2.779 0.012859 *
scale(MPFC_offset) 0.11172 0.23432 0.477 0.639590
Typecomedy:scale(Pos_arousal_scaled) 0.35027 0.37689 0.929 0.365707
Typecomedy:scale(Neg_arousal_scaled) 2.85753 0.71248 4.011 0.000906 ***
Typecomedy:scale(NAcc_onset) 0.69729 0.24036 2.901 0.009942 **
Typecomedy:scale(AIns_middle) -0.46369 0.26794 -1.731 0.101635
Typecomedy:scale(MPFC_offset) 0.52593 0.27348 1.923 0.071384 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.4455 on 17 degrees of freedom
Multiple R-squared: 0.9436, Adjusted R-squared: 0.9038
F-statistic: 23.71 on 12 and 17 DF, p-value: 3.021e-08
R2m R2c
[1,] 0.9074989 0.9074989
[1] 47.58297
there are higher-order terms (interactions) in this model
consider setting type = 'predictor'; see ?vif
Type scale(Theaters_US_W1_num) scale(Pos_arousal_scaled)
18.115472 1.263053 16.666114
scale(Neg_arousal_scaled) scale(NAcc_onset) scale(AIns_middle)
11.115527 5.408594 3.311431
scale(MPFC_offset) Type:scale(Pos_arousal_scaled) Type:scale(Neg_arousal_scaled)
8.023124 11.875668 15.574833
Type:scale(NAcc_onset) Type:scale(AIns_middle) Type:scale(MPFC_offset)
5.464800 3.321676 7.912335
LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkKYGBgCgojIExvYWQgbGlicmFyaWVzCmBgYHtyfQpsaWJyYXJ5KGNhcikKbGlicmFyeShrbml0cikKbGlicmFyeShybWRmb3JtYXRzKQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkoZ2dwdWJyKQpsaWJyYXJ5KEdHYWxseSkKYGBgCgoKYGBge3IsIHdhcm5pbmcgPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShsbWU0KQpsaWJyYXJ5KGxtZXJUZXN0KQpsaWJyYXJ5KCJNdU1JbiIpCmxpYnJhcnkobG10ZXN0KQpsaWJyYXJ5KGJvb3QpCmBgYAoKIyBSZWFkIGRhdGFzZXRzCmBgYHtyfQpBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24gPC0gcmVhZC5jc3YoJy9Vc2Vycy9sdWlzYWx2YXJlei9Eb2N1bWVudHMvR2l0SHViL1JNX1RoZXNpc19OZXVyb2ZvcmVjYXN0aW5nL1Byb2Nlc3NlZERhdGEvQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0FnZ3JlZ2F0ZV9Db21iaW5lZF9jbGVhbi5jc3YnKQoKQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSA8LSByZWFkLmNzdignL1VzZXJzL2x1aXNhbHZhcmV6L0RvY3VtZW50cy9HaXRIdWIvUk1fVGhlc2lzX05ldXJvZm9yZWNhc3RpbmcvUHJvY2Vzc2VkRGF0YS9BbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQWdncmVnYXRlX0NvbWJpbmVkX0NvbWVkeV9jbGVhbi5jc3YnKQoKQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciA8LSByZWFkLmNzdignL1VzZXJzL2x1aXNhbHZhcmV6L0RvY3VtZW50cy9HaXRIdWIvUk1fVGhlc2lzX05ldXJvZm9yZWNhc3RpbmcvUHJvY2Vzc2VkRGF0YS9BbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQWdncmVnYXRlX0NvbWJpbmVkX0hvcnJvcl9jbGVhbi5jc3YnKQoKYGBgCiMgTm90ZXM6IAogLSBIYXZlIG5vdGUgcmVtb3ZlZCBvdXRsaWVycyBmcm9tIGRhdGEuCgojIENyZWF0ZSBkYXRhIGZyYW1lcyBmb3IgZWFjaCBtb2RlbC4KYGBge3J9CiMgRGVmaW5lIGFnZ3JlZ2F0ZSB2YXJpYWJsZXMuIApBbGxfR3Jvc3NfVzFfbG9nIDwtIGxvZyhBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kR3Jvc3NfVVNfVzFfbnVtKQpBbGxfVGhlYXRlcnNfVzEgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJFRoZWF0ZXJzX1VTX1cxX251bQoKQ29tZWR5X0dyb3NzX1cxX2xvZyA8LSBsb2coQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRHcm9zc19VU19XMV9udW0pCkNvbWVkeV9UaGVhdGVyc19XMSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JFRoZWF0ZXJzX1VTX1cxX251bQoKSG9ycm9yX0dyb3NzX1cxX2xvZyA8LSBsb2coQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciRHcm9zc19VU19XMV9udW0pCkhvcnJvcl9UaGVhdGVyc19XMSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fSG9ycm9yJFRoZWF0ZXJzX1VTX1cxX251bQogIApNMV9kZiA8LSBkYXRhLmZyYW1lKEFsbF9Hcm9zc19XMV9sb2csIEFsbF9UaGVhdGVyc19XMSkgCk0xX0NfZGYgPC0gZGF0YS5mcmFtZShDb21lZHlfR3Jvc3NfVzFfbG9nLCBDb21lZHlfVGhlYXRlcnNfVzEpIApNMV9IX2RmIDwtIGRhdGEuZnJhbWUoSG9ycm9yX0dyb3NzX1cxX2xvZywgSG9ycm9yX1RoZWF0ZXJzX1cxKSAKCiMgRGVmaW5lIGFmZmVjdCB2YXJpYWJsZXMuCkFsbF9QQSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kUG9zX2Fyb3VzYWxfc2NhbGVkCkFsbF9OQSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kTmVnX2Fyb3VzYWxfc2NhbGVkCgpDb21lZHlfUEEgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRQb3NfYXJvdXNhbF9zY2FsZWQKQ29tZWR5X05BIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Db21lZHkkTmVnX2Fyb3VzYWxfc2NhbGVkCgpIb3Jyb3JfUEEgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciRQb3NfYXJvdXNhbF9zY2FsZWQKSG9ycm9yX05BIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkTmVnX2Fyb3VzYWxfc2NhbGVkCgpNMl9kZiA8LSBkYXRhLmZyYW1lKEFsbF9Hcm9zc19XMV9sb2csIEFsbF9QQSwgQWxsX05BKSAKTTJfQ19kZiA8LSBkYXRhLmZyYW1lKENvbWVkeV9Hcm9zc19XMV9sb2csIENvbWVkeV9QQSwgQ29tZWR5X05BKSAKTTJfSF9kZiA8LSBkYXRhLmZyYW1lKEhvcnJvcl9Hcm9zc19XMV9sb2csIEhvcnJvcl9QQSwgSG9ycm9yX05BKSAKYGBgCgpgYGB7cn0KIyBEZWZpbmUgSVNDIHZhcmlhYmxlcy4gCkFsbF9OQWNjX0lTQyA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kTkFjY19JU0MKQWxsX0FJbnNfSVNDIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiRBSW5zX0lTQwpBbGxfTVBGQ19JU0MgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJE1QRkNfSVNDCgpDb21lZHlfTkFjY19JU0MgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSROQWNjX0lTQwpDb21lZHlfQUluc19JU0MgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRBSW5zX0lTQwpDb21lZHlfTVBGQ19JU0MgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRNUEZDX0lTQwoKSG9ycm9yX05BY2NfSVNDIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkTkFjY19JU0MKSG9ycm9yX0FJbnNfSVNDIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkQUluc19JU0MKSG9ycm9yX01QRkNfSVNDIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkTVBGQ19JU0MKCiMgRGVmaW5lIG1vZGVscy4gCk00X2RmIDwtIGRhdGEuZnJhbWUoQWxsX05BY2NfSVNDLCBBbGxfQUluc19JU0MsIEFsbF9NUEZDX0lTQykgCk00X0NfZGYgPC0gZGF0YS5mcmFtZShDb21lZHlfTkFjY19JU0MsIENvbWVkeV9BSW5zX0lTQywgQ29tZWR5X01QRkNfSVNDKSAKTTRfSF9kZiA8LSBkYXRhLmZyYW1lKEhvcnJvcl9OQWNjX0lTQywgSG9ycm9yX0FJbnNfSVNDLCBIb3Jyb3JfTVBGQ19JU0MpIAoKTTVfZGYgPC0gZGF0YS5mcmFtZShBbGxfR3Jvc3NfVzFfbG9nLCBBbGxfUEEsIEFsbF9OQSwgQWxsX05BY2NfSVNDLCBBbGxfQUluc19JU0MsIEFsbF9NUEZDX0lTQykgCk01X0NfZGYgPC0gZGF0YS5mcmFtZShDb21lZHlfR3Jvc3NfVzFfbG9nLCBDb21lZHlfUEEsIENvbWVkeV9OQSwgQ29tZWR5X05BY2NfSVNDLCBDb21lZHlfQUluc19JU0MsIENvbWVkeV9NUEZDX0lTQykgCk01X0hfZGYgPC0gZGF0YS5mcmFtZShIb3Jyb3JfR3Jvc3NfVzFfbG9nLCBIb3Jyb3JfUEEsIEhvcnJvcl9OQSwgSG9ycm9yX05BY2NfSVNDLCBIb3Jyb3JfQUluc19JU0MsIEhvcnJvcl9NUEZDX0lTQykgCmBgYAoKYGBge3J9CiMgRGVmaW5lIHdob2xlIHZhcmlhYmxlcy4gCkFsbF9OQWNjX3dob2xlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiROQWNjX3dob2xlCkFsbF9BSW5zX3dob2xlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiRBSW5zX3dob2xlCkFsbF9NUEZDX3dob2xlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiRNUEZDX3dob2xlCgpDb21lZHlfTkFjY193aG9sZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JE5BY2Nfd2hvbGUKQ29tZWR5X0FJbnNfd2hvbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRBSW5zX3dob2xlCkNvbWVkeV9NUEZDX3dob2xlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Db21lZHkkTVBGQ193aG9sZQoKSG9ycm9yX05BY2Nfd2hvbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciROQWNjX3dob2xlCkhvcnJvcl9BSW5zX3dob2xlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkQUluc193aG9sZQpIb3Jyb3JfTVBGQ193aG9sZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fSG9ycm9yJE1QRkNfd2hvbGUKCiMgRGVmaW5lIG1vZGVscy4gCk02X2RmIDwtIGRhdGEuZnJhbWUoQWxsX05BY2Nfd2hvbGUsIEFsbF9BSW5zX3dob2xlLCBBbGxfTVBGQ193aG9sZSkgCk02X0NfZGYgPC0gZGF0YS5mcmFtZShDb21lZHlfTkFjY193aG9sZSwgQ29tZWR5X0FJbnNfd2hvbGUsIENvbWVkeV9NUEZDX3dob2xlKSAKTTZfSF9kZiA8LSBkYXRhLmZyYW1lKEhvcnJvcl9OQWNjX3dob2xlLCBIb3Jyb3JfQUluc193aG9sZSwgSG9ycm9yX01QRkNfd2hvbGUpIAoKTTdfZGYgPC0gZGF0YS5mcmFtZShBbGxfR3Jvc3NfVzFfbG9nLCBBbGxfUEEsIEFsbF9OQSwgQWxsX05BY2Nfd2hvbGUsIEFsbF9BSW5zX3dob2xlLCBBbGxfTVBGQ193aG9sZSkgCk03X0NfZGYgPC0gZGF0YS5mcmFtZShDb21lZHlfR3Jvc3NfVzFfbG9nLCBDb21lZHlfUEEsIENvbWVkeV9OQSwgQ29tZWR5X05BY2Nfd2hvbGUsCiAgICAgICAgICAgICAgICAgICAgICBDb21lZHlfQUluc193aG9sZSwgQ29tZWR5X01QRkNfd2hvbGUpIApNN19IX2RmIDwtIGRhdGEuZnJhbWUoSG9ycm9yX0dyb3NzX1cxX2xvZywgSG9ycm9yX1BBLCBIb3Jyb3JfTkEsIEhvcnJvcl9OQWNjX3dob2xlLAogICAgICAgICAgICAgICAgICAgICAgSG9ycm9yX0FJbnNfd2hvbGUsIEhvcnJvcl9NUEZDX3dob2xlKSAKYGBgCgpgYGB7cn0KIyBEZWZpbmUgb25zZXQgdmFyaWFibGVzLiAKQWxsX05BY2Nfb25zZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJE5BY2Nfb25zZXQKQWxsX0FJbnNfb25zZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJEFJbnNfb25zZXQKQWxsX01QRkNfb25zZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJE1QRkNfb25zZXQKCkNvbWVkeV9OQWNjX29uc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Db21lZHkkTkFjY19vbnNldApDb21lZHlfQUluc19vbnNldCA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JEFJbnNfb25zZXQKQ29tZWR5X01QRkNfb25zZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRNUEZDX29uc2V0CgpIb3Jyb3JfTkFjY19vbnNldCA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fSG9ycm9yJE5BY2Nfb25zZXQKSG9ycm9yX0FJbnNfb25zZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciRBSW5zX29uc2V0CkhvcnJvcl9NUEZDX29uc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkTVBGQ19vbnNldAoKIyBEZWZpbmUgbW9kZWxzLiAKTThfZGYgPC0gZGF0YS5mcmFtZShBbGxfTkFjY19vbnNldCwgQWxsX0FJbnNfb25zZXQsIEFsbF9NUEZDX29uc2V0KSAKTThfQ19kZiA8LSBkYXRhLmZyYW1lKENvbWVkeV9OQWNjX29uc2V0LCBDb21lZHlfQUluc19vbnNldCwgQ29tZWR5X01QRkNfb25zZXQpIApNOF9IX2RmIDwtIGRhdGEuZnJhbWUoSG9ycm9yX05BY2Nfb25zZXQsIEhvcnJvcl9BSW5zX29uc2V0LCBIb3Jyb3JfTVBGQ19vbnNldCkgCgpNOV9kZiA8LSBkYXRhLmZyYW1lKEFsbF9Hcm9zc19XMV9sb2csIEFsbF9QQSwgQWxsX05BLCBBbGxfTkFjY19vbnNldCwgQWxsX0FJbnNfb25zZXQsIEFsbF9NUEZDX29uc2V0KSAKTTlfQ19kZiA8LSBkYXRhLmZyYW1lKENvbWVkeV9Hcm9zc19XMV9sb2csIENvbWVkeV9QQSwgQ29tZWR5X05BLCBDb21lZHlfTkFjY19vbnNldCwKICAgICAgICAgICAgICAgICAgICAgIENvbWVkeV9BSW5zX29uc2V0LCBDb21lZHlfTVBGQ19vbnNldCkgCk05X0hfZGYgPC0gZGF0YS5mcmFtZShIb3Jyb3JfR3Jvc3NfVzFfbG9nLCBIb3Jyb3JfUEEsIEhvcnJvcl9OQSwgSG9ycm9yX05BY2Nfb25zZXQsCiAgICAgICAgICAgICAgICAgICAgICBIb3Jyb3JfQUluc19vbnNldCwgSG9ycm9yX01QRkNfb25zZXQpIApgYGAKCmBgYHtyfQojIERlZmluZSBtaWRkbGUgdmFyaWFibGVzLiAKQWxsX05BY2NfbWlkZGxlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiROQWNjX21pZGRsZQpBbGxfQUluc19taWRkbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJEFJbnNfbWlkZGxlCkFsbF9NUEZDX21pZGRsZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kTVBGQ19taWRkbGUKCkNvbWVkeV9OQWNjX21pZGRsZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JE5BY2NfbWlkZGxlCkNvbWVkeV9BSW5zX21pZGRsZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JEFJbnNfbWlkZGxlCkNvbWVkeV9NUEZDX21pZGRsZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JE1QRkNfbWlkZGxlCgpIb3Jyb3JfTkFjY19taWRkbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciROQWNjX21pZGRsZQpIb3Jyb3JfQUluc19taWRkbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciRBSW5zX21pZGRsZQpIb3Jyb3JfTVBGQ19taWRkbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciRNUEZDX21pZGRsZQoKIyBEZWZpbmUgbW9kZWxzLiAKTTEwX2RmIDwtIGRhdGEuZnJhbWUoQWxsX05BY2NfbWlkZGxlLCBBbGxfQUluc19taWRkbGUsIEFsbF9NUEZDX21pZGRsZSkgCk0xMF9DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X05BY2NfbWlkZGxlLCBDb21lZHlfQUluc19taWRkbGUsIENvbWVkeV9NUEZDX21pZGRsZSkgCk0xMF9IX2RmIDwtIGRhdGEuZnJhbWUoSG9ycm9yX05BY2NfbWlkZGxlLCBIb3Jyb3JfQUluc19taWRkbGUsIEhvcnJvcl9NUEZDX21pZGRsZSkgCgpNMTFfZGYgPC0gZGF0YS5mcmFtZShBbGxfR3Jvc3NfVzFfbG9nLCBBbGxfUEEsIEFsbF9OQSwgQWxsX05BY2NfbWlkZGxlLCBBbGxfQUluc19taWRkbGUsIEFsbF9NUEZDX21pZGRsZSkgCk0xMV9DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X0dyb3NzX1cxX2xvZywgQ29tZWR5X1BBLCBDb21lZHlfTkEsIENvbWVkeV9OQWNjX21pZGRsZSwKICAgICAgICAgICAgICAgICAgICAgIENvbWVkeV9BSW5zX21pZGRsZSwgQ29tZWR5X01QRkNfbWlkZGxlKSAKTTExX0hfZGYgPC0gZGF0YS5mcmFtZShIb3Jyb3JfR3Jvc3NfVzFfbG9nLCBIb3Jyb3JfUEEsIEhvcnJvcl9OQSwgSG9ycm9yX05BY2NfbWlkZGxlLAogICAgICAgICAgICAgICAgICAgICAgSG9ycm9yX0FJbnNfbWlkZGxlLCBIb3Jyb3JfTVBGQ19taWRkbGUpIApgYGAKCmBgYHtyfQojIERlZmluZSBtaWRkbGUgdmFyaWFibGVzLiAKQWxsX05BY2Nfb2Zmc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiROQWNjX29mZnNldApBbGxfQUluc19vZmZzZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJEFJbnNfb2Zmc2V0CkFsbF9NUEZDX29mZnNldCA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kTVBGQ19vZmZzZXQKCkNvbWVkeV9OQWNjX29mZnNldCA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JE5BY2Nfb2Zmc2V0CkNvbWVkeV9BSW5zX29mZnNldCA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JEFJbnNfb2Zmc2V0CkNvbWVkeV9NUEZDX29mZnNldCA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JE1QRkNfb2Zmc2V0CgpIb3Jyb3JfTkFjY19vZmZzZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciROQWNjX29mZnNldApIb3Jyb3JfQUluc19vZmZzZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciRBSW5zX29mZnNldApIb3Jyb3JfTVBGQ19vZmZzZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciRNUEZDX29mZnNldAoKIyBEZWZpbmUgbW9kZWxzLiAKTTEyX2RmIDwtIGRhdGEuZnJhbWUoQWxsX05BY2Nfb2Zmc2V0LCBBbGxfQUluc19vZmZzZXQsIEFsbF9NUEZDX29mZnNldCkgCk0xMl9DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X05BY2Nfb2Zmc2V0LCBDb21lZHlfQUluc19vZmZzZXQsIENvbWVkeV9NUEZDX29mZnNldCkgCk0xMl9IX2RmIDwtIGRhdGEuZnJhbWUoSG9ycm9yX05BY2Nfb2Zmc2V0LCBIb3Jyb3JfQUluc19vZmZzZXQsIEhvcnJvcl9NUEZDX29mZnNldCkgCgpNMTNfZGYgPC0gZGF0YS5mcmFtZShBbGxfR3Jvc3NfVzFfbG9nLCBBbGxfUEEsIEFsbF9OQSwgQWxsX05BY2Nfb2Zmc2V0LCBBbGxfQUluc19vZmZzZXQsIEFsbF9NUEZDX29mZnNldCkgCk0xM19DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X0dyb3NzX1cxX2xvZywgQ29tZWR5X1BBLCBDb21lZHlfTkEsIENvbWVkeV9OQWNjX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgIENvbWVkeV9BSW5zX29mZnNldCwgQ29tZWR5X01QRkNfb2Zmc2V0KSAKTTEzX0hfZGYgPC0gZGF0YS5mcmFtZShIb3Jyb3JfR3Jvc3NfVzFfbG9nLCBIb3Jyb3JfUEEsIEhvcnJvcl9OQSwgSG9ycm9yX05BY2Nfb2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgSG9ycm9yX0FJbnNfb2Zmc2V0LCBIb3Jyb3JfTVBGQ19vZmZzZXQpIApgYGAKCmBgYHtyfQoKTTE0X2RmIDwtIGRhdGEuZnJhbWUoQWxsX0dyb3NzX1cxX2xvZywgQWxsX1BBLCBBbGxfTkEsIEFsbF9OQWNjX29uc2V0LCBBbGxfQUluc19taWRkbGUsIEFsbF9NUEZDX29mZnNldCkgCk0xNF9DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X0dyb3NzX1cxX2xvZywgQ29tZWR5X1BBLCBDb21lZHlfTkEsIENvbWVkeV9OQWNjX29uc2V0LAogICAgICAgICAgICAgICAgICAgICAgQ29tZWR5X0FJbnNfbWlkZGxlLCBDb21lZHlfTVBGQ19vZmZzZXQpIApNMTRfSF9kZiA8LSBkYXRhLmZyYW1lKEhvcnJvcl9Hcm9zc19XMV9sb2csIEhvcnJvcl9QQSwgSG9ycm9yX05BLCBIb3Jyb3JfTkFjY19vbnNldCwKICAgICAgICAgICAgICAgICAgICAgIEhvcnJvcl9BSW5zX21pZGRsZSwgSG9ycm9yX01QRkNfb2Zmc2V0KSAKYGBgCgoKIyBOZXVyb2ZvcmVjYXN0aW5nOiBGaXJzdCBXZWVrIFVTLgojIyBNMTogQmVoYXZpb3JhbCBkYXRhIApgYGB7ciwgZWNobyA9IEZBTFNFfQpNMSA8LSBsbShsb2coR3Jvc3NfVVNfVzFfbnVtKSB+IFR5cGUgCiAgICAgICAgICsgc2NhbGUoVGhlYXRlcnNfVVNfVzFfbnVtKQogICAgICAgICArIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfVzFfbnVtKQogICAgICAgICAsIGRhdGEgPSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24gJT4lIG11dGF0ZShUeXBlID0gZmFjdG9yKFR5cGUsIGxldmVscyA9IGMoImhvcnJvciIsICJjb21lZHkiKSkpKQpzdW1tYXJ5KE0xKQpyLnNxdWFyZWRHTE1NKE0xKQpBSUMoTTEpCgojIENyZWF0ZSBwYWlycyBwbG90LiAKZ2dwYWlycyhNMV9kZikKZ2dwYWlycyhNMV9DX2RmKQpnZ3BhaXJzKE0xX0hfZGYpCmBgYAoKCiMjIE0yOiBBZmZlY3RpdmUgZGF0YSBhbG9uZQpgYGB7ciwgZWNobyA9IEZBTFNFfQpNMiA8LSBsbShsb2coR3Jvc3NfVVNfVzFfbnVtKSB+IFR5cGUgCiAgICAgICAgICsgc2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKSAKICAgICAgICAgKyBzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICsgVHlwZTpzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTIpCnIuc3F1YXJlZEdMTU0oTTIpCkFJQyhNMikKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE0yX2RmKQpnZ3BhaXJzKE0yX0NfZGYpCmdncGFpcnMoTTJfSF9kZikKYGBgCgojIyBNMzogQWdncmVnYXRlIGFuZCBhZmZlY3RpdmUgZGF0YSBhbG9uZQpgYGB7ciwgZWNobyA9IEZBTFNFfQpNMyA8LSBsbShsb2coR3Jvc3NfVVNfVzFfbnVtKSB+IFR5cGUgCiAgICAgICAgICMrIHNjYWxlKFRoZWF0ZXJzX1VTX1cxX251bSkKICAgICAgICAgKyBzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpIAogICAgICAgICArIHNjYWxlKE5lZ19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgIysgVHlwZTpzY2FsZShUaGVhdGVyc19VU19XMV9udW0pCiAgICAgICAgICsgVHlwZTpzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTMpCnIuc3F1YXJlZEdMTU0oTTMpCkFJQyhNMykKCmBgYAoKIyBNNDogSVNDIGRhdGEgYWxvbmUKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTQgPC0gbG0obG9nKEdyb3NzX1VTX1cxX251bSkgfiBUeXBlICsgCiAgICAgICAgICAgICAgKyBzY2FsZShOQWNjX0lTQykgCiAgICAgICAgICAgICAgKyBzY2FsZShBSW5zX0lTQykgCiAgICAgICAgICAgICAgKyBzY2FsZShNUEZDX0lTQykgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE5BY2NfSVNDKSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoQUluc19JU0MpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShNUEZDX0lTQykgCiAgICAgICAgICAgICAgLCBkYXRhID0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uICU+JSBtdXRhdGUoVHlwZSA9IGZhY3RvcihUeXBlLCBsZXZlbHMgPSBjKCJob3Jyb3IiLCAiY29tZWR5IikpKSkKc3VtbWFyeShNNCkKci5zcXVhcmVkR0xNTShNNCkKQUlDKE00KQoKIyBDcmVhdGUgcGFpcnMgcGxvdC4gCmdncGFpcnMoTTRfZGYpCmdncGFpcnMoTTRfQ19kZikKZ2dwYWlycyhNNF9IX2RmKQpgYGAKCiMgTTU6IElTQyBkYXRhICsgYWZmZWN0aXZlIGRhdGEgKyBiZWhhdmlvcmFsIGRhdGEKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTUgPC0gbG0obG9nKEdyb3NzX1VTX1cxX251bSkgfiBUeXBlIAogICAgICAgICAgICAgKyBzY2FsZShUaGVhdGVyc19VU19XMV9udW0pIAogICAgICAgICAgICAgKyBzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpIAogICAgICAgICAgICAgKyBzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpICAKICAgICAgICAgICAgICMrIHNjYWxlKFdfc2NvcmVfc2NhbGVkKSAKICAgICAgICAgICAgICsgc2NhbGUoTkFjY19JU0MpIAogICAgICAgICAgICAgKyBzY2FsZShBSW5zX0lTQykgCiAgICAgICAgICAgICArIHNjYWxlKE1QRkNfSVNDKSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShUaGVhdGVyc19VU19XMV9udW0pIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICAgICAjKyBUeXBlOnNjYWxlKFdfc2NvcmVfc2NhbGVkKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE5BY2NfSVNDKSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShBSW5zX0lTQykgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTVBGQ19JU0MpCiAgICAgICAgICAgICAsIGRhdGEgPSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24gJT4lIG11dGF0ZShUeXBlID0gZmFjdG9yKFR5cGUsIGxldmVscyA9IGMoImhvcnJvciIsICJjb21lZHkiKSkpKQpzdW1tYXJ5KE01KQpyLnNxdWFyZWRHTE1NKE01KQpBSUMoTTUpCgojIENyZWF0ZSBwYWlycyBwbG90LiAKZ2dwYWlycyhNNV9kZikKZ2dwYWlycyhNNV9DX2RmKQpnZ3BhaXJzKE01X0hfZGYpCmBgYAoKIyBNNjogTmV1cmFsIHdob2xlIGRhdGEgYWxvbmUKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTYgPC0gbG0obG9nKEdyb3NzX1VTX1cxX251bSkgfiBUeXBlICsgCiAgICAgICAgICAgICAgIysgVGhlYXRlcnNfVVNfVzFfbnVtIAogICAgICAgICAgICAgICsgc2NhbGUoTkFjY193aG9sZSkgCiAgICAgICAgICAgICAgKyBzY2FsZShBSW5zX3dob2xlKSAKICAgICAgICAgICAgICArIHNjYWxlKE1QRkNfd2hvbGUpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOQWNjX3dob2xlKSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoQUluc193aG9sZSkgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE1QRkNfd2hvbGUpIAogICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTYpCnIuc3F1YXJlZEdMTU0oTTYpCkFJQyhNNikKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE02X2RmKQpnZ3BhaXJzKE02X0NfZGYpCmdncGFpcnMoTTZfSF9kZikKYGBgCgojIE03OiBOZXVyYWwgd2hvbGUgZGF0YSArIGFmZmVjdGl2ZSBkYXRhICsgYmVoYXZpb3JhbCBkYXRhCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck03IDwtIGxtKGxvZyhHcm9zc19VU19XMV9udW0pIH4gVHlwZSAKICAgICAgICAgICAgICsgc2NhbGUoVGhlYXRlcnNfVVNfVzFfbnVtKQogICAgICAgICAgICAgIysgVG90YWxfd2Vla3MgCiAgICAgICAgICAgICAjKyBXZWVrc19hdmdfcGVyX3RoZWF0ZXIKICAgICAgICAgICAgICsgc2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKSAKICAgICAgICAgICAgICsgc2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKSAgCiAgICAgICAgICAgICAjKyBzY2FsZShXX3Njb3JlX3NjYWxlZCkgCiAgICAgICAgICAgICArIHNjYWxlKE5BY2Nfd2hvbGUpIAogICAgICAgICAgICAgKyBzY2FsZShBSW5zX3dob2xlKSAKICAgICAgICAgICAgICsgc2NhbGUoTVBGQ193aG9sZSkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfVzFfbnVtKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY193aG9sZSkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoQUluc193aG9sZSkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTVBGQ193aG9sZSkKICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTcpCnIuc3F1YXJlZEdMTU0oTTcpCkFJQyhNNykKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE03X2RmKQpnZ3BhaXJzKE03X0NfZGYpCmdncGFpcnMoTTdfSF9kZikKYGBgCgojIE04OiBOZXVyYWwgb25zZXQgZGF0YSBhbG9uZQpgYGB7ciwgZWNobyA9IEZBTFNFfQpNOCA8LSBsbShsb2coR3Jvc3NfVVNfVzFfbnVtKSB+IFR5cGUgKyAKICAgICAgICAgICAgICArIHNjYWxlKE5BY2Nfb25zZXQpIAogICAgICAgICAgICAgICsgc2NhbGUoQUluc19vbnNldCkgCiAgICAgICAgICAgICAgKyBzY2FsZShNUEZDX29uc2V0KSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19vbnNldCkgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKEFJbnNfb25zZXQpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShNUEZDX29uc2V0KSAKICAgICAgICAgICAgICAsIGRhdGEgPSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24gJT4lIG11dGF0ZShUeXBlID0gZmFjdG9yKFR5cGUsIGxldmVscyA9IGMoImhvcnJvciIsICJjb21lZHkiKSkpKQpzdW1tYXJ5KE04KQpyLnNxdWFyZWRHTE1NKE04KQpBSUMoTTgpCgojIENyZWF0ZSBwYWlycyBwbG90LiAKZ2dwYWlycyhNOF9kZikKZ2dwYWlycyhNOF9DX2RmKQpnZ3BhaXJzKE04X0hfZGYpCmBgYAoKIyBNOTogTmV1cmFsIG9uc2V0IGRhdGEgKyBhZmZlY3RpdmUgZGF0YSArIGJlaGF2aW9yYWwgZGF0YQpgYGB7ciwgZWNobyA9IEZBTFNFfQpNOSA8LSBsbShsb2coR3Jvc3NfVVNfVzFfbnVtKSB+IFR5cGUgCiAgICAgICAgICAgICArIHNjYWxlKFRoZWF0ZXJzX1VTX1cxX251bSkKICAgICAgICAgICAgICsgc2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKSAKICAgICAgICAgICAgICsgc2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKSAgCiAgICAgICAgICAgICArIHNjYWxlKE5BY2Nfb25zZXQpIAogICAgICAgICAgICAgKyBzY2FsZShBSW5zX29uc2V0KSAKICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19vbnNldCkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfVzFfbnVtKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19vbnNldCkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoQUluc19vbnNldCkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTVBGQ19vbnNldCkKICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTkpCnIuc3F1YXJlZEdMTU0oTTkpCkFJQyhNOSkKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE05X2RmKQpnZ3BhaXJzKE05X0NfZGYpCmdncGFpcnMoTTlfSF9kZikKYGBgCgojIE0xMDogTmV1cmFsIG1pZGRsZSBkYXRhIGFsb25lCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck0xMCA8LSBsbShsb2coR3Jvc3NfVVNfVzFfbnVtKSB+IFR5cGUgKyAKICAgICAgICAgICAgICArIHNjYWxlKE5BY2NfbWlkZGxlKSAKICAgICAgICAgICAgICArIHNjYWxlKEFJbnNfbWlkZGxlKSAKICAgICAgICAgICAgICArIHNjYWxlKE1QRkNfbWlkZGxlKSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19taWRkbGUpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShBSW5zX21pZGRsZSkgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE1QRkNfbWlkZGxlKSAKICAgICAgICAgICAgICAsIGRhdGEgPSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24gJT4lIG11dGF0ZShUeXBlID0gZmFjdG9yKFR5cGUsIGxldmVscyA9IGMoImhvcnJvciIsICJjb21lZHkiKSkpKQpzdW1tYXJ5KE0xMCkKci5zcXVhcmVkR0xNTShNMTApCkFJQyhNMTApCgojIENyZWF0ZSBwYWlycyBwbG90LiAKZ2dwYWlycyhNMTBfZGYpCmdncGFpcnMoTTEwX0NfZGYpCmdncGFpcnMoTTEwX0hfZGYpCmBgYAoKIyBNMTE6IE5ldXJhbCBtaWRkbGUgZGF0YSArIGFmZmVjdGl2ZSBkYXRhICsgYmVoYXZpb3JhbCBkYXRhCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck0xMSA8LSBsbShsb2coR3Jvc3NfVVNfVzFfbnVtKSB+IFR5cGUgCiAgICAgICAgICAgICArIHNjYWxlKFRoZWF0ZXJzX1VTX1cxX251bSkKICAgICAgICAgICAgICsgc2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKSAKICAgICAgICAgICAgICsgc2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKSAgCiAgICAgICAgICAgICArIHNjYWxlKE5BY2NfbWlkZGxlKSAKICAgICAgICAgICAgICsgc2NhbGUoQUluc19taWRkbGUpIAogICAgICAgICAgICAgKyBzY2FsZShNUEZDX21pZGRsZSkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfVzFfbnVtKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19taWRkbGUpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKEFJbnNfbWlkZGxlKSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShNUEZDX21pZGRsZSkKICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTExKQpyLnNxdWFyZWRHTE1NKE0xMSkKQUlDKE0xMSkKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE0xMV9kZikKZ2dwYWlycyhNMTFfQ19kZikKZ2dwYWlycyhNMTFfSF9kZikKYGBgCgojIE0xMjogTmV1cmFsIG9mZnNldCBkYXRhIGFsb25lCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck0xMiA8LSBsbShsb2coR3Jvc3NfVVNfVzFfbnVtKSB+IFR5cGUgKyAKICAgICAgICAgICAgICArIHNjYWxlKE5BY2Nfb2Zmc2V0KSAKICAgICAgICAgICAgICArIHNjYWxlKEFJbnNfb2Zmc2V0KSAKICAgICAgICAgICAgICArIHNjYWxlKE1QRkNfb2Zmc2V0KSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19vZmZzZXQpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShBSW5zX29mZnNldCkgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE1QRkNfb2Zmc2V0KSAKICAgICAgICAgICAgICAsIGRhdGEgPSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24gJT4lIG11dGF0ZShUeXBlID0gZmFjdG9yKFR5cGUsIGxldmVscyA9IGMoImhvcnJvciIsICJjb21lZHkiKSkpKQpzdW1tYXJ5KE0xMikKci5zcXVhcmVkR0xNTShNMTIpCkFJQyhNMTIpCgojIENyZWF0ZSBwYWlycyBwbG90LiAKZ2dwYWlycyhNMTJfZGYpCmdncGFpcnMoTTEyX0NfZGYpCmdncGFpcnMoTTEyX0hfZGYpCmBgYAoKIyBNMTM6IE5ldXJhbCBvZmZzZXQgZGF0YSArIGFmZmVjdGl2ZSBkYXRhICsgYmVoYXZpb3JhbCBkYXRhCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck0xMyA8LSBsbShsb2coR3Jvc3NfVVNfVzFfbnVtKSB+IFR5cGUgCiAgICAgICAgICAgICArIHNjYWxlKFRoZWF0ZXJzX1VTX1cxX251bSkKICAgICAgICAgICAgICsgc2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKSAKICAgICAgICAgICAgICsgc2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKSAgCiAgICAgICAgICAgICArIHNjYWxlKE5BY2Nfb2Zmc2V0KSAKICAgICAgICAgICAgICsgc2NhbGUoQUluc19vZmZzZXQpIAogICAgICAgICAgICAgKyBzY2FsZShNUEZDX29mZnNldCkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfVzFfbnVtKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19vZmZzZXQpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKEFJbnNfb2Zmc2V0KSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShNUEZDX29mZnNldCkKICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTEzKQpyLnNxdWFyZWRHTE1NKE0xMykKQUlDKE0xMykKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE0xM19kZikKZ2dwYWlycyhNMTNfQ19kZikKZ2dwYWlycyhNMTNfSF9kZikKYGBgCgojIE0xNDogU2VxdWVuY2UgbW9kZWwKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTE0IDwtIGxtKGxvZyhHcm9zc19VU19XMV9udW0pIH4gVHlwZSAKICAgICAgICAgICAgICsgc2NhbGUoVGhlYXRlcnNfVVNfVzFfbnVtKQogICAgICAgICAgICAgKyBzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpIAogICAgICAgICAgICAgKyBzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpIAogICAgICAgICAgICAgIysgc2NhbGUoV19zY29yZV9zY2FsZWQpICAKICAgICAgICAgICAgICsgc2NhbGUoTkFjY19vbnNldCkgCiAgICAgICAgICAgICArIHNjYWxlKEFJbnNfbWlkZGxlKSAKICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19vZmZzZXQpIAogICAgICAgICAgICAgIysgVHlwZTpzY2FsZShUaGVhdGVyc19VU19XMV9udW0pICMgVGhpcyBpbXByb3ZlZCB0aGUgcmVzdWx0cy4gCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE5lZ19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICMrIFR5cGU6c2NhbGUoV19zY29yZV9zY2FsZWQpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19vbnNldCkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoQUluc19taWRkbGUpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE1QRkNfb2Zmc2V0KQogICAgICAgICAgICAgLCBkYXRhID0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uICU+JSBtdXRhdGUoVHlwZSA9IGZhY3RvcihUeXBlLCBsZXZlbHMgPSBjKCJob3Jyb3IiLCAiY29tZWR5IikpKSkKc3VtbWFyeShNMTQpCnIuc3F1YXJlZEdMTU0oTTE0KQpBSUMoTTE0KQoKIyBDcmVhdGUgcGFpcnMgcGxvdC4gCiNnZ3BhaXJzKE0xNF9kZikKI2dncGFpcnMoTTE0X0NfZGYpCiNnZ3BhaXJzKE0xNF9IX2RmKQp2aWYoTTE0KQpgYGAK